Ext.onReady(function() {

			Ext.QuickTips.init();

			var Entity = Ext.ux.data.CalcRecord.create(['a', 'b', {
						name			: 'sum',
						dependencies	: ['a', 'b'],
						notDirty		: true,
						calc			: function(rec) {
							return rec.get('a') + rec.get('b');
						}
					}]);

			var store = new Ext.data.Store({
						proxy		: new Ext.data.HttpProxy({
									method	: 'GET',
									url		: 'data.json'
								}),
						reader		: new Ext.data.JsonReader({
									fields	: ['a', 'b', 'c'],
									root	: 'data'
								}, Entity),
						autoLoad	: true
					});

			var grid = new Ext.grid.EditorGridPanel({
						store	: store,
						columns	: [{
									header		: 'a',
									dataIndex	: 'a',
									sortable	: true,
									editor		: new Ext.form.NumberField({
												allowBlank	: false
											})
								}, {
									header		: 'b',
									dataIndex	: 'b',
									sortable	: true,
									editor		: new Ext.form.NumberField({
												allowBlank	: false
											})
								}, {
									header		: 'Sum',
									dataIndex	: 'sum',
									sortable	: true
								}],
						tbar	: [{
									text	: 'insert',
									handler	: function() {}
								}, {
									text	: 'test',
									handler	: function() {
										alert(Ext.encode(getGridData()));
									}
								}]
					});

			function getGridData() {
				var recs = [];
				var len = store.getCount();
				for (i = 0, cnt = len; i < cnt; i += 1) {
					var rec = store.getAt(i);
					recs.push(rec.data);
				}

				return recs;
			}

			new Ext.Viewport({
						layout	: 'fit',
						items	: [grid]
					});
		});
